#include <stdio.h>
#include <signal.h>
#include <time.h>
#include <stdlib.h>
#include "print.h"
#include "game_control.h"

void print_start_ui()
{
	printf("\033[2J");
	int i;

	// 打印上下两行
	for (i = 0; i < 47; i++)
	{
		printf("\033[%d;%dH\033[43m  \033[0m", 5, i + 10);
		printf("\033[%d;%dH\033[43m  \033[0m", 30, i + 10);
	}

	// 打印列
	for (i = 0; i < 26; i++)
	{
		printf("\033[%d;%dH\033[43m  \033[0m", i + 5, 10);
		printf("\033[%d;%dH\033[43m  \033[0m", i + 5, 40);
		printf("\033[%d;%dH\033[43m  \033[0m", i + 5, 56);
	}

	// 打印中间一行
	for (i = 0; i < 17; i++)
	{
		printf("\033[%d;%dH\033[43m  \033[0m", 12, 40 + i);
	}

	// 分数与等级
	printf("\033[%d;%dHScore:0\033[0m", score_y, score_x);
	printf("\033[%d;%dHLevel:0\033[0m", level_y, level_x);

	// 打印提示
	printf("\33[17;12H**  Press Enter to start  **\33[0m");
	fflush(NULL);
}

void init_game_ui()
{
	print_start_ui();
	int ch = getchar();

	// 消除提示
	printf("\033[17;12H                            \33[0m");

	// 随机种子
	srand((unsigned int)time(NULL));

	// 在VS下 random是没有的,要替换为 rand #include <stdlib.h>
	dynamic_num = rand() % 7;
	dynamic_mode = rand() % 4;
	dynamic_color = rand() % 7 + 40;

	dynamic_x = init_x;
	dynamic_y = init_y;

	print_mode_shape(dynamic_num, dynamic_mode, dynamic_x, dynamic_y, dynamic_color);
	print_next_shape();
	printf("\033[?25l");
}

// 判断二维矩阵是否填满
int get_matrix_result(int line)
{
	int i = 0;
	if (line < 0)
	{
		return 1;
	}
	
	for (i = 0; i < 28; i++)
	{
		if (matrix[line][i] != 0)
		{
			return 1;
		}
	}

	return 0;
}

int check_game_over()
{
	int n_line = 23;
	int n_count = 0;
	int i = 0;
	for (i = 0; i < 24; i++)
	{
		int have_one = get_matrix_result(i);
		// 如果这一行有方块,则判断下一行有没有
		if (have_one != 0)
		{
			n_line--;
		}
		else
		{
			return 0;
		}
	}
	return 1;
}

int main()
{
	init_game_ui();

	// 执行定时器,并使图形下落
	custom_timer(ms, timer_callback);
	
	user_control();
	return 0;
}